package br.com.sgi.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.validation.constraints.Size;

@Entity
@Table(name="MEMBRO_FUNCAO")
@NamedQueries({
@NamedQuery(
	    name="buscarMembroFuncaoPorCoMembro",
	    query=" SELECT mf FROM MembroFuncao mf " +
	    	  " WHERE mf.membro.igrejaPertence.sistema.coSeqSistema =:coSistema" +
	    	  " AND mf.membro.coSeqMembro = :coMembro" +
			  " AND mf.stMembroFuncao = :tipoFuncao"),
  @NamedQuery(
		    name="excluirMembroFuncaoPorCoMembro",
		    query=" DELETE FROM MembroFuncao mf " +
		    	  " WHERE mf.membro.igrejaPertence.sistema.coSeqSistema =:coSistema" +
		    	  " AND mf.membro.coSeqMembro = :coMembro" +
				  " AND mf.stMembroFuncao = :tipoFuncao")
})
public class MembroFuncao implements Serializable {
	
	private static final long serialVersionUID = 1L;

	@Id			  
	@Column(name="CO_SEQ_MEMBRO_FUNCAO")
	@GeneratedValue(strategy=GenerationType.SEQUENCE, generator = "seq_membroFuncao")  
	@SequenceGenerator(name = "seq_membroFuncao", sequenceName = "SGI.seq_membro_funcao") 
	private Long coSeqoMebroFuncao;
	
	@JoinColumn(name="CO_FUNCAO")
	@ManyToOne
	private Funcao funcao;
	
	@JoinColumn(name="CO_MEMBRO")
	@ManyToOne
	private Membro membro;
	
	@Column(name="ST_MEMBRO_FUNCAO")
	@Size(max=1)
	private String stMembroFuncao;


	public Long getCoSeqoMebroFuncao() {
		return coSeqoMebroFuncao;
	}

	public void setCoSeqoMebroFuncao(Long coSeqoMebroFuncao) {
		this.coSeqoMebroFuncao = coSeqoMebroFuncao;
	}

	public Funcao getFuncao() {
		return funcao;
	}

	public void setFuncao(Funcao funcao) {
		this.funcao = funcao;
	}

	public Membro getMembro() {
		return membro;
	}

	public void setMembro(Membro membro) {
		this.membro = membro;
	}

	public String getStMembroFuncao() {
		return stMembroFuncao;
	}

	public void setStMembroFuncao(String stMembroFuncao) {
		this.stMembroFuncao = stMembroFuncao;
	}
	
	

}
